package com.hznc.wcs.service.bpm;

import com.diboot.core.vo.Pagination;

import com.hznc.wcs.vo.bpm.*;
import org.flowable.bpmn.model.UserTask;

import java.util.List;


/**
 * @Description :
 * @Date : 2024/6/20
 * @Author : ChenJin
 * @Version : v1.0.0
 **/
public interface BpmProcessTaskService {

    /**
     * 分页查询我的待办
     * @param reqVO
     * @param pagination
     * @return
     */
    List<BpmTaskRespVO> getTodoList(BpmTaskReqVO reqVO, Pagination pagination);

    /**
     * f分页查询我的已办
     * @param reqVO
     * @param pagination
     * @return
     */
    List<BpmTaskRespVO> getDoneList(BpmTaskReqVO reqVO, Pagination pagination);

    /**
     * 通过任务
     * @param reqVO
     */
    void approveTask(BpmTaskApproveReqVO reqVO);

    /**
     * 审批不通过
     * @param reqVO
     */
    void rejectTask(BpmTaskRejectReqVO reqVO);

    /**
     * 获取可回退的任务节点
     * @param id
     * @return
     */
    List<UserTask> getReturnTaskList(String id);

    /**
     * 回退任务
     * @param reqVO
     */
    void returnTask(BpmTaskReturnReqVO reqVO);

    /**
     * 委派
     * @param reqVO
     */
    void delegateTask(BpmTaskDelegateReqVO reqVO);

    /**
     * 转派
     * @param reqVO
     */
    void transferTask(BpmTaskTransferReqVO reqVO);

    /**
     * 加签
     * @param reqVO
     */
    void addSignTask(BpmTaskAddSignReqVO reqVO);

    /**
     * 减签
     * @param reqVO
     */
    void deleteSignTask(BpmTaskAddSignReqVO reqVO);

    /**
     * 获取可减签的任务列表
     * @param parentTaskId
     * @return
     */
    List<BpmTaskRespVO> getDeleteSignTaskList(String parentTaskId);

    /**
     * 根据流程实例ID查询当前待办的一个任务并自动完成
     * @param processInstanceId
     * @return
     */
    void commitUserTask(String processInstanceId);

}
